package com.tedu.api.list;
import org.junit.Test;

import java.util.*;
/**链表实现集合  包位置；Java.util
 * List接口集合--三个实现类：
 * ArrayList 实现类：数组实现
 *          特点：查询快【按照下标】、增删慢【改动下标：元素】
 * LinkedList 实现类：双向链表实现
 *          特点：查询慢【按照下标】、增删快【首、尾元素，中间元素】
 *          ArrayList与LinkedList大部分方法完全一致：
 *          添加 add()  获取 get()  删除 remove()
 *          size() 获取集合总数  clear()清空集合元素
 *      不一致的方法：
 *      indexOf() lastIndexOf
 *      addFirst()
 *      addLast()
 *      removeFirst()
 *      removeLast()
 */
public class LinkedListAPI {
    @Test
    public void testIndexOf() {
        //创建集合--双向链接集合
        List<String> list1 = new LinkedList<>();
        list1.add("三吱");
        list1.add("龙虎斗");
        list1.add("螺蛳粉");
        list1.add("庵汤");
        /**ArrayList与LinkedList通用方法
         * indexOf()   返回值：int
         * 作用：返回指定元素在集合中第一次出现的的索引位置
         *     【理解：返回元素的下标位】
         */
        int inndex = list1.indexOf("庵汤");
        /** LinkedList独有方法
         * addFirst()       返回值：void
         * 作用：将指定元素添加至链表头部
         *  LastIndexOf()     返回值：int
         * 作用：返回最后的元素在集合中出现的索引位置
         */
        int lastIndex = list1.lastIndexOf("庵汤");
        System.out.println("返回最后元素的下标：" + lastIndex);
        /**
         * LinkedList独有方法
         * addFirst()    返回值：void
         * 作用：将指定元素添加至链表头部
         *      indexOf() lastIndexOf
         *      addFirst()
         *      addLast()
         *      removeFirst()
         *      removeLast()
         */

    }
    @Test
    public void testAR () {

        //创建集合--双向链接集合
        List<String> list = new  LinkedList<>();
        list.add("三吱");
        list.add("龙虎斗");
        list.add("螺蛳粉");
        list.add("庵汤");

        //LinkedList独有方法
        ((LinkedList)list).addLast("榴莲");
        ((LinkedList)list).addLast("豆汁");
        System.out.println("双向链表："+list);
        ((LinkedList)list).removeFirst();
        System.out.println("双向链表："+list);
    }
}
